//package com.johnny.xia.img;
///*
// * Copyright 2002-2016 Drew Noakes
// *
// *    Licensed under the Apache License, Version 2.0 (the "License");
// *    you may not use this file except in compliance with the License.
// *    You may obtain a copy of the License at
// *
// *        http://www.apache.org/licenses/LICENSE-2.0
// *
// *    Unless required by applicable law or agreed to in writing, software
// *    distributed under the License is distributed on an "AS IS" BASIS,
// *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// *    See the License for the specific language governing permissions and
// *    limitations under the License.
// *
// * More information about this project is available at:
// *
// *    https://drewnoakes.com/code/exif/
// *    https://github.com/drewnoakes/metadata-extractor
// */
//
//import java.io.File;
//import java.io.IOException;
//import java.util.Arrays;
//
//import com.drew.imaging.ImageMetadataReader;
//import com.drew.imaging.ImageProcessingException;
//import com.drew.imaging.jpeg.JpegMetadataReader;
//import com.drew.imaging.jpeg.JpegProcessingException;
//import com.drew.metadata.Directory;
//import com.drew.metadata.Metadata;
//import com.drew.metadata.Tag;
//import com.drew.metadata.exif.ExifReader;
//import com.drew.metadata.iptc.IptcReader;
//
///**
// * Showcases the most popular ways of using the metadata-extractor library.
// * <p>
// * For more information, see the project wiki: https://github.com/drewnoakes/metadata-extractor/wiki/GettingStarted
// *
// * @author Drew Noakes https://drewnoakes.com
// */
//public class SampleUsage
//{
//    /**
//     * Executes the sample usage program.
//     *
//     * @param args command line parameters
//     */
//    public static void main(String[] args)
//    {
//        File file = new File("Tests/Data/withIptcExifGps.jpg");
//
//        // There are multiple ways to get a Metadata object for a file
//
//        //
//        // SCENARIO 1: UNKNOWN FILE TYPE
//        //
//        // This is the most generic approach.  It will transparently determine the file type and invoke the appropriate
//        // readers.  In most cases, this is the most appropriate usage.  This will handle JPEG, TIFF, GIF, BMP and RAW
//        // (CRW/CR2/NEF/RW2/ORF) files and extract whatever metadata is available and understood.
//        //
//        try {
//            Metadata metadata = ImageMetadataReader.readMetadata(file);
//
//            print(metadata);
//        } catch (ImageProcessingException e) {
//            // handle exception
//        } catch (IOException e) {
//            // handle exception
//        }
//
//        //
//        // SCENARIO 2: SPECIFIC FILE TYPE
//        //
//        // If you know the file to be a JPEG, you may invoke the JpegMetadataReader, rather than the generic reader
//        // used in approach 1.  Similarly, if you knew the file to be a TIFF/RAW image you might use TiffMetadataReader,
//        // PngMetadataReader for PNG files, BmpMetadataReader for BMP files, or GifMetadataReader for GIF files.
//        //
//        // Using the specific reader offers a very, very slight performance improvement.
//        //
//        try {
//            Metadata metadata = JpegMetadataReader.readMetadata(file);
//
//            print(metadata);
//        } catch (JpegProcessingException e) {
//            // handle exception
//        } catch (IOException e) {
//            // handle exception
//        }
//
//        //
//        // APPROACH 3: SPECIFIC METADATA TYPE
//        //
//        // If you only wish to read a subset of the supported metadata types, you can do this by
//        // passing the set of readers to use.
//        //
//        // This currently only applies to JPEG file processing.
//        //
//        try {
//            // We are only interested in handling
//            Iterable<JpegSegmentMetadataReader> readers = Arrays.asList(new ExifReader(), new IptcReader());
//
//            Metadata metadata = JpegMetadataReader.readMetadata(file, readers);
//
//            print(metadata);
//        } catch (JpegProcessingException e) {
//            // handle exception
//        } catch (IOException e) {
//            // handle exception
//        }
//    }
//
//    private static void print(Metadata metadata)
//    {
//        System.out.println("-------------------------------------");
//
//        // Iterate over the data and print to System.out
//
//        //
//        // A Metadata object contains multiple Directory objects
//        //
//        for (Directory directory : metadata.getDirectories()) {
//
//            //
//            // Each Directory stores values in Tag objects
//            //
//            for (Tag tag : directory.getTags()) {
//                System.out.println(tag);
//            }
//
//            //
//            // Each Directory may also contain error messages
//            //
//            if (directory.hasErrors()) {
//                for (String error : directory.getErrors()) {
//                    System.err.println("ERROR: " + error);
//                }
//            }
//        }
//    }
//}